package cmd

import (
	"fmt"
	"strconv"
	"strings"

	"git-todo/internal/git"
	"git-todo/internal/storage"
)

func Edit(args []string) {
	if len(args) < 2 {
		fmt.Println("请提供任务 ID 以及新的内容")
		return
	}

	newContent := strings.Join(args[1:], " ")
	if strings.TrimSpace(newContent) == "" {
		fmt.Println("新的任务内容不能为空")
		return
	}

	branch, err := git.GetCurrentBranch()
	if err != nil {
		fmt.Println("不在 Git 仓库中")
		return
	}

	todos, err := storage.LoadTodos()
	if err != nil {
		fmt.Println("加载待办任务数据失败:", err)
		return
	}

	tasks := todos[branch]
	if len(tasks) == 0 {
		fmt.Println("当前分支没有待办任务")
		return
	}

	id, err := strconv.Atoi(args[0])
	if err != nil {
		fmt.Println("任务 ID 必须为数字")
		return
	}

	for i := range tasks {
		if tasks[i].ID == id {
			oldContent := tasks[i].Content
			tasks[i].Content = newContent
			todos[branch] = tasks

			if err := storage.SaveTodos(todos); err != nil {
				fmt.Println("保存待办任务数据失败:", err)
				return
			}

			fmt.Printf("已更新任务：%s -> %s\n", oldContent, newContent)
			return
		}
	}

	fmt.Println("未找到匹配的任务 ID")
}
